#ifndef __SYSTEM_DATA_H
#define __SYSTEM_DATA_H
#include "stm32f4xx.h"

typedef enum key_type_t
{
    KEY_NULL,//空按键
    DEAL_KEY_1,//交易按键
    STORAGE_KEY_2,//按键2
    CONFIR_KEY_3,//按键3   确认键
    BACK_KEY_4//按键4    后退键
}key_type_t;


typedef enum uart_type_t
{
    UART_NULL,//空串口
    UART1,//串口1
    UART2,//串口2
    UART3,//串口3
}uart_type_t;


typedef enum 
{
    S_INIT,//初始化状态DEAL_
    S_DEAL,//交易状态
    S_STORAGE,//入户状态
    S_STORAGE_CONFIR,//
    S_SCAN,//扫描状态
    S_SCAN_CONFIR,//
    S_PAY,//支付状态
    S_PAY_CONFIR,//支付状态确认

}system_state_t;

#pragma pack(1)
typedef struct 
{
    uint8_t str_name[4];//商品名
    uint8_t bar_code[11];//条形码
    uint16_t money;//金额
}goods_link_t;





typedef struct 
{
    volatile    uint8_t         exit_num;//中断引脚号
    volatile    system_state_t  system_state;//系统的状态
    volatile    key_type_t      key_type;//按键的类型
    volatile    uart_type_t     uart_type;//串口的类型
    volatile    uint8_t         press_key_premiss;//按键允许，当被置为1时，才可以处理按键
    volatile    uint8_t         uart_message_premiss;//串口数据接收，当被置为1时，才可以处理串口数据
    volatile    uint8_t         premmiss_change_state;//允许改变状态
                uint8_t         bar_code[11];
    volatile    uint16_t        cust_pay_money;//顾客付的
    volatile    uint16_t        need_pay_money;//商品总值
    volatile    uint8_t         goods_num;//商品目前的数量
    volatile    uint8_t         buy_goods_num;//购买的商品数量
    volatile    system_state_t  last_system_state;//上一个系统状态
}app_t;

extern app_t *g_app;




#endif
